package com.jeesite.modules.app.examinate.extheory.entity;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.hibernate.validator.constraints.Length;

import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.entity.TreeEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.JoinTable;
import com.jeesite.common.mybatis.annotation.JoinTable.Type;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;
import com.jeesite.modules.zx.audio.bank.entity.TaudioBank;
import com.jeesite.modules.zx.barbecue.signup.entity.TbarbecueSignup;
import com.jeesite.modules.zx.picture.bank.entity.TpictureBank;
import com.jeesite.modules.zx.question.bank.entity.TquestionBank;
import com.jeesite.modules.zx.reading.bank.entity.TreadingBank;

@Table(name="t_examination_barbecue", alias="a", columns={
		@Column(name="id", attrName="id", label="主键", isPK=true),
		@Column(name="exam_id", attrName="examId", label="考试考场关联字段"),
		@Column(name="obj_name", attrName="objName", label="数据名称", queryType=QueryType.LIKE, isTreeName=true),
		@Column(name="obj_simple", attrName="objSimple", label="数据简介"),
		@Column(name="obj_type", attrName="objType", label="数据类型"),
		@Column(includeEntity=TreeEntity.class),
		@Column(name="barbecue_start_date", attrName="barbecueStartDate", label="报名开始时间"),
		@Column(name="barbecue_end_date", attrName="barbecueEndDate", label="报名结束日期"),
		@Column(name="signup_start_date", attrName="signupStartDate", label="报名开始时间"),
		@Column(name="signup_end_date", attrName="signupEndDate", label="报名结束日期"),
		@Column(includeEntity=DataEntity.class),
		@Column(name="obj_explain", attrName="objExplain", label="数据说明"),
		@Column(name="question_score",attrName="questionScore",label="得分"),
		@Column(name="course_id",attrName="courseId",label="课程id"),
		@Column(name="post",attrName="post",label="岗位编码"),
		@Column(name="category",attrName="category",label="考试类别"),
		@Column(name="difficulty",attrName="difficulty",label="困难程度"),
		@Column(name="knowledge_point_type",attrName="knowledgePointType",label="知识类型"),
		@Column(name="maxscore",attrName="maxScore",label="总分"),
		@Column(name="file_url",attrName="fileUrl",label="副件"),
	}, orderBy="a.tree_sorts, a.id"
)
public class AppExaminationBarbecue extends TreeEntity<AppExaminationBarbecue>{
	private static final long serialVersionUID = 1L;
	private String objName,examId;		// 数据名称
	private String objSimple;		// 数据简介
	private Integer objType;		// 数据类型
	private Date barbecueStartDate;		// 报名开始时间
	private Date barbecueEndDate;		// 报名结束日期
	private Date signupStartDate;
	private Date signupEndDate;
	private Integer objExplain;		// 数据说明
	private TbarbecueSignup barbecueSignup=new TbarbecueSignup();
	private BigDecimal questionScore;	
	private BigDecimal maxScore;
	private String courseId;
	private Boolean checked=false;
	private String post,categoryName;
	private Integer category,difficulty,knowledgePointType,state;
	private String startTimeOf,endTimeOf,ongoing,stateStr,fileUrl;//考试描述
	private Long upEndTime;
	//题库
	private List<TquestionBank> quetbankList=new ArrayList<TquestionBank>();
	//音频题
	private List<TaudioBank> audioBankList=new ArrayList<>();
	//阅读理解题
	private List<TreadingBank> readingBankList=new ArrayList<>();
	//图片题
	private List<TpictureBank> pictureBankList=new ArrayList<>();
	
	public List<TaudioBank> getAudioBankList() {
		return audioBankList;
	}

	public void setAudioBankList(List<TaudioBank> audioBankList) {
		this.audioBankList = audioBankList;
	}

	public List<TreadingBank> getReadingBankList() {
		return readingBankList;
	}

	public void setReadingBankList(List<TreadingBank> readingBankList) {
		this.readingBankList = readingBankList;
	}

	public List<TpictureBank> getPictureBankList() {
		return pictureBankList;
	}

	public void setPictureBankList(List<TpictureBank> pictureBankList) {
		this.pictureBankList = pictureBankList;
	}

	public BigDecimal getMaxScore() {
		return maxScore;
	}

	public void setMaxScore(BigDecimal maxScore) {
		this.maxScore = maxScore;
	}

	public String getExamId() {
		return examId;
	}

	public void setExamId(String examId) {
		this.examId = examId;
	}

	public String getStateStr() {
		return stateStr;
	}

	public void setStateStr(String stateStr) {
		this.stateStr = stateStr;
	}

	public String getFileUrl() {
		return fileUrl;
	}

	public void setFileUrl(String fileUrl) {
		this.fileUrl = fileUrl;
	}

	public Long getUpEndTime() {
		return upEndTime;
	}

	public void setUpEndTime(Long upEndTime) {
		this.upEndTime = upEndTime;
	}

	public String getStartTimeOf() {
		return startTimeOf;
	}

	public void setStartTimeOf(String startTimeOf) {
		this.startTimeOf = startTimeOf;
	}

	public String getEndTimeOf() {
		return endTimeOf;
	}

	public void setEndTimeOf(String endTimeOf) {
		this.endTimeOf = endTimeOf;
	}

	public String getOngoing() {
		return ongoing;
	}

	public void setOngoing(String ongoing) {
		this.ongoing = ongoing;
	}

	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	public Date getSignupStartDate() {
		return signupStartDate;
	}

	public void setSignupStartDate(Date signupStartDate) {
		this.signupStartDate = signupStartDate;
	}
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	public Date getSignupEndDate() {
		return signupEndDate;
	}

	public void setSignupEndDate(Date signupEndDate) {
		this.signupEndDate = signupEndDate;
	}
	public String getCategoryName() {
		return categoryName;
	}
	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}
	public Integer getState() {
		return state;
	}
	public void setState(Integer state) {
		this.state = state;
	}
	public List<TquestionBank> getQuetbankList() {
		return quetbankList;
	}
	public void setQuetbankList(List<TquestionBank> quetbankList) {
		this.quetbankList = quetbankList;
	}
	public String getPost() {
		return post;
	}
	public void setPost(String post) {
		this.post = post;
	}
	public Integer getCategory() {
		return category;
	}
	public void setCategory(Integer category) {
		this.category = category;
	}
	public Integer getDifficulty() {
		return difficulty;
	}
	public void setDifficulty(Integer difficulty) {
		this.difficulty = difficulty;
	}
	public Integer getKnowledgePointType() {
		return knowledgePointType;
	}
	public void setKnowledgePointType(Integer knowledgePointType) {
		this.knowledgePointType = knowledgePointType;
	}
	public String getCourseId() {
		return courseId;
	}
	public void setCourseId(String courseId) {
		this.courseId = courseId;
	}
	@Override
	public AppExaminationBarbecue getParent() {
		return parent;
	}
	@Override
	public void setParent(AppExaminationBarbecue arg0) {
		this.parent = parent;
	}
	public Boolean getChecked() {
		return checked;
	}

	public void setChecked(Boolean checked) {
		this.checked = checked;
	}

	public BigDecimal getQuestionScore() {
		return questionScore;
	}

	public void setQuestionScore(BigDecimal questionScore) {
		this.questionScore = questionScore;
	}

	public TbarbecueSignup getBarbecueSignup() {
		return barbecueSignup;
	}

	public void setBarbecueSignup(TbarbecueSignup barbecueSignup) {
		this.barbecueSignup = barbecueSignup;
	}


	public AppExaminationBarbecue() {
		this(null);
	}

	public AppExaminationBarbecue(String id){
		super(id);
	}
	@Length(min=0, max=255, message="数据名称长度不能超过 255 个字符")
	public String getObjName() {
		return objName;
	}

	public void setObjName(String objName) {
		this.objName = objName;
	}
	
	@Length(min=0, max=255, message="数据简介长度不能超过 255 个字符")
	public String getObjSimple() {
		return objSimple;
	}

	public void setObjSimple(String objSimple) {
		this.objSimple = objSimple;
	}
	
	public Integer getObjType() {
		return objType;
	}

	public void setObjType(Integer objType) {
		this.objType = objType;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	public Date getBarbecueStartDate() {
		return barbecueStartDate;
	}

	public void setBarbecueStartDate(Date barbecueStartDate) {
		this.barbecueStartDate = barbecueStartDate;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
	public Date getBarbecueEndDate() {
		return barbecueEndDate;
	}

	public void setBarbecueEndDate(Date barbecueEndDate) {
		this.barbecueEndDate = barbecueEndDate;
	}
	
	public Integer getObjExplain() {
		return objExplain;
	}

	public void setObjExplain(Integer objExplain) {
		this.objExplain = objExplain;
	}
	
}
